home *** CD-ROM | disk | FTP | other *** search
/ Precision Software Appli…tions Silver Collection 1 / Precision Software Applications Silver Collection Volume One (PSM) (1993).iso / demos / devel3.exe / SEGASUPP.H < prev    next >
C/C++ Source or Header  |  1992-06-05  |  3KB  |  80 lines

  1. /************ declarations from sgint.c ***********/
  2.  
  3. extern void init_SG_interrupt( void(* sega_switcher)(), /* NULL if no sega/video   */
  4.             void(* glove_handler)(), /* NULL if no glove driver */
  5.             int glove_tc);           /* 1.19*uS (test interval) */
  6.  
  7. /*
  8.  sega_switcher is called just before the vertical retrace
  9.  use NULL if no video synchronization desired
  10.  
  11.  glove_handler is called once or more per screen time
  12.  use NULL if not required
  13.  
  14.  glove_tc is period in timer clocks (1.19 * microseconds) desired between
  15.  glove_handler calls.  If sega_switcher is also used, this will be an
  16.  integer number per screen time.  Use 6500 for best results, as this
  17.  gives the least glitches (2xscreen for 72 Hz, 3xscreen for 60 Hz VGA cards
  18.  
  19. /***** GLOVE DATA SPECIFICATIONS **************
  20.  
  21. x =   X position, 3mm per number
  22. y =   Y position, 3mm per number
  23. z =   distance,  14mm per number
  24. rot = wrist twist. 0 is up 1 is slightly CW, 5 is down,
  25.       11 is slightly CCW.
  26.       About 30 to 40 degrees per count.
  27.  
  28.  Note: exact scaling of all above change with distance! Closer is higher res.
  29.  
  30. fingers = packed 2-bit values, 0 is open, 3 is (tight) fist:
  31.     Bit format: TtIiMmRr  for Thumb, Index, Middle, and Ring fingers.
  32.  
  33. keys: $FF or $80 is no key. Responds with 0 to 9 for keys "0" thru "9"
  34.       $82 = START, $83 = SEL, $0A = "A", $0B = "B", 0 is "Center"
  35.       Up,down,left,right are $0D,$0E,$0C,$0F respectively.
  36.  
  37. gstat1, gstat2 are dummies
  38. rxflags is valid ONLY after glove_ready returns 2.
  39.         Also available in glove_rx_flags
  40.  
  41. nmissed is number of reads since last glove_read call
  42.  
  43. **********************************************/
  44.  
  45. typedef struct glove_data {
  46.     signed char x,y,z,rot,fingers,keys,gstat1,gstat2,rxflags;
  47.     unsigned int nmissed;  /* number of samples missed */
  48.     } glove_data;
  49.  
  50. /* prototypes */
  51.  
  52. extern void getglove (glove_data *);    /* get data packet from glove */
  53. extern int  glove_ready(void);        /* returns 0 if not ready     */
  54.                 /*         1 if data ready    */
  55.                 /*         2 if rxflags also valid */
  56. #define DEGLITCH   1
  57. #define NODEGLITCH 0
  58. extern void glove_init(int gdeg);     /* sets up glove, enters hires mode    */
  59.                 /* gdeg switches deglitching on or off */
  60.  
  61. extern int glove_read(glove_data *g);  /* reads glove data, with de-glitching */
  62.  
  63. extern void glove_int_handler();       /* int handler: pass as argument to SGinit */
  64.  
  65. extern int glove_rx_flags;  /* updated 10 mS after data: 0x3F if good */
  66. extern int glove_rx_try;    /* # of slow reads: rx_flags valid if try>0 */
  67.  
  68.  
  69. /**************** SEGA SUPPORT ****************/
  70.  
  71. extern int left_page;   /* video page with current left image */
  72. extern int right_page;  /* video page with current right image */
  73. extern int rs232_port_adr;    /* set for com1: 0x3fc, com2: 0x2fc */
  74.  
  75.  
  76. extern void switch_sega();     /* video, glasses switcher: pass to SGinit */
  77.  
  78. extern void sega_off();        /* turn off glasses at exit (longer life) */
  79.  
  80.